/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package src.j2ee.compumake.controladores;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import src.j2ee.compumake.dao.DAOGabinete;
import src.j2ee.compumake.dao.DAOMemoria;
import src.j2ee.compumake.dao.DAOMonitor;
import src.j2ee.compumake.dao.DAOPedido;
import src.j2ee.compumake.dao.DAOProcesador;
import src.j2ee.compumake.dao.DAORaton;
import src.j2ee.compumake.dao.DAOSucursal;
import src.j2ee.compumake.dao.DAOTarjetaMadre;
import src.j2ee.compumake.dao.DAOTarjetaVideo;
import src.j2ee.compumake.dao.DAOTeclado;
import src.j2ee.compumake.dao.DAOUnidadOptica;
import src.j2ee.compumake.dao.DAOUsuario;
import src.j2ee.compumake.dominio.ComponentePedido;
import src.j2ee.compumake.dominio.Gabinete;
import src.j2ee.compumake.dominio.Memoria;
import src.j2ee.compumake.dominio.Monitor;
import src.j2ee.compumake.dominio.Pedido;
import src.j2ee.compumake.dominio.Procesador;
import src.j2ee.compumake.dominio.Producto;
import src.j2ee.compumake.dominio.Raton;
import src.j2ee.compumake.dominio.Sucursal;
import src.j2ee.compumake.dominio.TarjetaMadre;
import src.j2ee.compumake.dominio.TarjetaVideo;
import src.j2ee.compumake.dominio.Teclado;
import src.j2ee.compumake.dominio.UnidadOptica;
import src.j2ee.compumake.dominio.Usuario;

/**
 *
 * @author Eric
 */
public class RegistroPeticion extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        
        ArrayList<Producto> arregloDeProductos = new ArrayList();
        
        HttpSession session = request.getSession(true);
        int idTarjetaMadre = (int) session.getAttribute("idTarjeta");
        int idProcesador = (int) session.getAttribute("idProcesador");
        int idMemoria = (int) session.getAttribute("idMemoria");
        int idUnidadOptica = (int) session.getAttribute("idUnidadOptica");
        int idTeclado = (int) session.getAttribute("idTeclado");
        int idMouse = (int) session.getAttribute("idMouse");
        int idTarjetaVideo = (int) session.getAttribute("idTarjetaVideo");
        int idMonitor = (int) session.getAttribute("idMonitor");
        int idGabinete = (int) session.getAttribute("idGabinete");
        
        DAOTarjetaMadre daoTarjetaMadre = new DAOTarjetaMadre();
        TarjetaMadre tarjetaMadre = daoTarjetaMadre.buscarTarjetaMadre(idTarjetaMadre);
        
        DAOProcesador daoProcesador = new DAOProcesador();
        Procesador procesador = daoProcesador.buscaProcesador(idProcesador);
        
        DAOMemoria daoMemoria = new DAOMemoria();
        Memoria memoria = daoMemoria.buscarMemoria(idMemoria);
        
        DAOUnidadOptica daoUnidadOptica = new DAOUnidadOptica();
        UnidadOptica unidadOptica = daoUnidadOptica.buscaUnidadOptica(idUnidadOptica);
        
        DAOTeclado daoTeclado = new DAOTeclado();
        Teclado teclado = daoTeclado.buscaTeclado(idTeclado);
        
        DAORaton daoRaton = new DAORaton();
        Raton raton = daoRaton.buscaRaton(idMouse);
        
        DAOTarjetaVideo daoTarjetaVideo = new DAOTarjetaVideo();
        TarjetaVideo tarjetaVideo = daoTarjetaVideo.buscaTarjeta(idTarjetaVideo);
        
        DAOMonitor daoMonitor = new DAOMonitor();
        Monitor monitor = daoMonitor.buscaMonitor(idMonitor);
        
        DAOGabinete daoGabinete = new DAOGabinete();
        Gabinete gabinete = daoGabinete.buscaGabinete(idGabinete);
        
        arregloDeProductos.add(tarjetaMadre);
        arregloDeProductos.add(procesador);
        arregloDeProductos.add(memoria);
        arregloDeProductos.add(unidadOptica);
        arregloDeProductos.add(teclado);
        arregloDeProductos.add(raton);
        arregloDeProductos.add(tarjetaVideo);
        arregloDeProductos.add(monitor);
        arregloDeProductos.add(gabinete);
        
        String fecha = "2013-05-31";
        
        DAOUsuario daoUsuario = new DAOUsuario();
        Usuario usuario = daoUsuario.buscarUsuario("Usuario1");
        
        DAOSucursal daoSucursal = new DAOSucursal();
        ArrayList<Sucursal> listaDeSucursales= new ArrayList<>();
        listaDeSucursales = daoSucursal.listarSucursales();
        
        String nombreSucursal = request.getParameter("sucursal");
        Sucursal sucursal = daoSucursal.buscaSucursal(idMouse);
        
        for(int i=0; i<listaDeSucursales.size(); i++){
            if(nombreSucursal.equals(listaDeSucursales.get(i).getNombre())){
                sucursal = listaDeSucursales.get(i);
            }
        }
        
        Pedido pedido = new Pedido(arregloDeProductos, fecha, sucursal, usuario);
        pedido.setFechaEntrega("2013-06-03");
        pedido.setPrecio(4500);
        
        System.out.println(pedido.getUsuario());
        System.out.println(pedido.getSucursalEntrega());
        
        DAOPedido daoPedido = new DAOPedido();
        daoPedido.registrarPedido(pedido);
        
        response.sendRedirect("index.jsp");
        
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
